Virtual machines decouple computing environments from hardware, making it possible to run a single computing environment on many different hardware platforms or to run multiple computing environments on a single hardware platform. It is possible to carry a computing environment between platforms as a user travels, or to have a single hardware platform run multiple different computing environments, or a combination of the two. Moreover, virtual machines make it possible to build a single composite computing environment up out of multiple virtual machines, with the various machines largely isolated from each other except to share application files. This isolation can be especially useful as it can protect one part of the computing environment from errors or vulnerabilities in other parts of the environment. It also supports much easier upgrading and maintenance of computing environments. For example, a user can have a web browsing virtual machine. If the browser becomes infected with a virus, the effects are confined to the virtual machine. If the browser becomes improperly configured because the user visits web sites that change the configuration settings, the user can simply discard the virtual machine and restore the original virtual machine. The rest of the composite computing environment remains intact. The widespread use of virtual machines can therefore bring significant improvements to a user's computing environment.
The advantages of virtual machines has led to the development of virtual machine web sites and marketplaces that store a wide range of differently configured virtual machines suitable for different user needs. These virtual machines comprise files stored on web sites that users or customers access to acquire the virtual machines they want or need. The presence of so many virtual machines, which remain inactive until they are acquired by users or customers, creates an information technology management problem. Computing environments such as virtual machines typically require maintenance in the form of software upgrades to correct coding errors, add new functionality, eliminate security vulnerabilities, etc. One standard way to perform an update establishes an automatic update process in which software in the running environment periodically checks an update source such as a web site for the presence of any new software updates. If the update process finds such updates, it downloads them and installs them into the environment. Another standard update process requires that a user access a website directly to find and install any new updates. None of these update processes are suitable for keeping the many and manifold virtual machines in a virtual machine repository or website correctly updated with software updates. The virtual machines in a repository or marketplace do not boot until they are downloaded and booted by the user and therefore do not receive and install any software upgrades while they are in the repository.
It would be preferable to automate the acquisition and installation of software upgrades for collections of virtual machines. In addition, the upgraded virtual machines need to be validated to ensure that they function correctly after the software upgrades are installed.